package com.zjj.learn.designmodel.work.observer;

import java.util.ArrayList;
import java.util.List;

/**
 * 具体主题，和书有关的公众号
 **/
public class BookSubject implements Subject{

    /**
     * 观察者模式的特点：具体主题需要聚合观察者对象
     **/
    private List<Observer> users = new ArrayList<>();

    @Override
    public void follow(Observer observer) {
        this.users.add(observer);
    }

    @Override
    public void unFollow(Observer observer) {
        this.users.remove(observer);
    }

    @Override
    public void addMessage(String message) {
        //当观察者存在时，就像每一个观察者发布消息
        if(!users.isEmpty()){
            for (Observer user : users) {
                user.accept(message);
            }
        }
    }
}
